package design.mode.proxy.dynamicProxy;

import java.lang.reflect.Proxy;

/**
 * 获取代理对象工具类
 */
public class ProxyUtil {

    public static Object getProxyInstance(Object obj) {
        MyProxy myProxy = new MyProxy(obj);
        /*
         *  obj.getClass().getClassLoader()：被代理对象的类加载器
         *  obj.getClass().getInterfaces() ：被代理对象的接口
         *  实质上是通过反射将被代理类的加载器和接口与代理对象关联起来
         *  obj :是被代理的对象
         *  proxy:实现InvocationHandler的接口
         */
        return Proxy
                .newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(),
                        myProxy);
    }
}
